Abstract

The ribosome is an extremely important molecular organelle for the cellular workings. It is of interest to a wide array of scientists with spanning interests from the fundamental questions of life and individuality to the practical fields of medicine development and pharmacology. Here we present network analysis on interactions between the ribosomal constituents – ribosomal RNA (rRNA) and ribosomal proteins (rProteins) in the context of the accretion model for ribosomal evolution [1]. We demonstrate that different evolutionary phases give deferring network statistics from one another, furthermore the ribosomal networks’characteristics are a result of their degree distributions when considering the ribosome as whole evolving entity. We also show that community detection algorithms can be used to define rRNA and rProtein folding domains, and show the interdependence between rRNA and rProtein interactions.

In [4]:
Image('./figs/Figure_1_A+B_rRNA+rProtein_Evolution-01.jpg')
Out[4]:
In [5]:
Image('./figs/RING_energy_dist.png')
Out[5]:
In [69]:
plot_nodes(EsCo_nodes)
In [21]:
louvain5, lv5_df = plot_louvain(5, G_EsCo, make_plot=True)
Resolution: 5
Number of partitions: 74
Modularity: 0.7958522770514428
In [26]:
prtn_mod_res_df, nodes_prtn_df = make_prtn_mod_res_df(resolution, G_EsCo)

# Create traces
trace0 = go.Scatter(
    x = prtn_mod_res_df['Resolution'],
    y = prtn_mod_res_df['Num_Partitions'],
    mode = 'lines',
    name = 'Partitions'
)
trace1 = go.Scatter(
    x = prtn_mod_res_df['Resolution'],
    y = prtn_mod_res_df['Modularity'],
    mode = 'lines',
    name = 'Modularity',
    yaxis='y2'
)


layout = go.Layout(
    title='Modularity and Parition Number vs. Louvain Resoution',
    xaxis=dict(
        title='Louvain Resolution'
    ),
    yaxis=dict(
        title='Number of Partitions'
    ),
    yaxis2=dict(
        title='Modularity',
        titlefont=dict(
            color='rgb(148, 103, 189)'
        ),
        tickfont=dict(
            color='rgb(148, 103, 189)'
        ),
        overlaying='y',
        side='right'
    )
)

data = [trace0, trace1]
fig = go.Figure(data=data, layout=layout)
iplot(fig)

nodes_prtn_df
Out[26]:
node louvain1.0 louvain1.5 louvain2.0 louvain2.5 louvain3.0 louvain3.5 louvain4.0 louvain4.5 louvain5.0 louvain5.5 louvain6.0 louvain6.5 louvain7.0 louvain7.5 louvain8.0 louvain8.5 louvain9.0 louvain9.5 louvain10.0 louvain10.5 louvain11.0 louvain11.5 louvain12.0 louvain12.5 louvain13.0 louvain13.5 louvain14.0 louvain14.5 louvain15.0 louvain15.5 louvain16.0 louvain16.5 louvain17.0 louvain17.5 louvain18.0 louvain18.5 louvain19.0 louvain19.5 louvain20.0
0 n0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
1 n1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
2 n10 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
3 n100 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
4 n1000 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5 5
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
10556 n9995 17 4 14 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
10557 n9996 17 4 14 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
10558 n9997 17 4 14 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
10559 n9998 17 4 14 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4
10560 n9999 17 4 14 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

10561 rows × 40 columns

In [29]:
plot_nodes_partitions(lv10_df[lv10_df.Object == 'uL02'])
In [35]:
plot_nodes(SaCe_rPro_nodes)
In [45]:
# Create traces
trace0 = go.Scatter(
    x = prtn_mod_res_df['Resolution'],
    y = prtn_mod_res_df['Num_Partitions'],
    mode = 'lines',
    name = 'Partitions'
)
trace1 = go.Scatter(
    x = prtn_mod_res_df['Resolution'],
    y = prtn_mod_res_df['Modularity'],
    mode = 'lines',
    name = 'Modularity',
    yaxis='y2'
)


layout = go.Layout(
    title='Modularity and Parition Number vs. Louvain Resoution',
    xaxis=dict(
        title='Louvain Resolution'
    ),
    yaxis=dict(
        title='Number of Partitions'
    ),
    yaxis2=dict(
        title='Modularity',
        titlefont=dict(
            color='rgb(148, 103, 189)'
        ),
        tickfont=dict(
            color='rgb(148, 103, 189)'
        ),
        overlaying='y',
        side='right'
    )
)

data = [trace0, trace1]
fig = go.Figure(data=data, layout=layout)
iplot(fig)
In [47]:
louvain4, df = plot_louvain(4, G_SaCe_rPro)
Resolution: 4
Number of partitions: 151
Modularity: 0.8093295900148612
In [65]:
plot_nodes_partitions(df[df.rProtein == 'uL02'], lines=True)
In [55]:
walktrap2 = walktrap_output(2)
walktrap4 = walktrap_output(4)
walktrap6 = walktrap_output(6)
walktrap8 = walktrap_output(8)
walktrap10 = walktrap_output(10)
walktrap100 = walktrap_output(100)
Walktrap steps: 2
Optimal count: 7293
Modularity: 0.10447832211050502
 
Walktrap steps: 4
Optimal count: 7293
Modularity: 0.10447832211050502
 
Walktrap steps: 6
Optimal count: 7293
Modularity: 0.10447832211050502
 
Walktrap steps: 8
Optimal count: 7293
Modularity: 0.10447832211050502
 
Walktrap steps: 10
Optimal count: 7293
Modularity: 0.10447832211050502
 
Walktrap steps: 100
Optimal count: 7293
Modularity: 0.10447832211050502
 
In [46]:
p1 = Image('./shortest_path/adjlist_ph1.txt.png', width=400)
p2 = Image('./shortest_path/adjlist_ph2.txt.png', width=400)
p3 = Image('./shortest_path/adjlist_ph3.txt.png', width=400)
p4 = Image('./shortest_path/adjlist_ph4.txt.png', width=400)
p5 = Image('./shortest_path/adjlist_ph5.txt.png', width=400)
p6 = Image('./shortest_path/adjlist_ph6.txt.png', width=400)
display(p1,p2,p3,p4,p5,p6)
In [45]:
p1 = Image('./shortest_path/conc_adjlist_ph1.txt.png', width=400)
p2 = Image('./shortest_path/conc_adjlist_ph2.txt.png', width=400)
p3 = Image('./shortest_path/conc_adjlist_ph3.txt.png', width=400)
p4 = Image('./shortest_path/conc_adjlist_ph4.txt.png', width=400)
p5 = Image('./shortest_path/conc_adjlist_ph5.txt.png', width=400)
p6 = Image('./shortest_path/conc_adjlist_ph6.txt.png', width=400)
display(p1,p2,p3,p4,p5,p6)